Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Runtime field editor] Error handling #109233

Merged
merged 33 commits into from
Nov 9, 2021

Conversation

sebelga
Copy link
Contributor

@sebelga sebelga commented Aug 19, 2021

This PR improves the error handling for runtime fields in the Data view field editor.

  • Move the painless syntax and script error message under the editor. The list of field in the preview is always rendered and when there is an error we display a Script error badge

Screenshot 2021-11-02 at 16 28 12

  • Wait to validate the Painless syntax in Monaco before making HTTP request to validate the script. If the syntax is invalid we don't make any request
  • Add Monaco markers to indicate in the editor where the Painless script failed. Currently it only indicate the start of the error. I opened an issue in ES to improve this and be able to underline the complete error

Screenshot 2021-09-21 at 13 17 02

  • Aggregate all the errors of the form in the top of the editor when submitting an invalid field

Screenshot 2021-11-02 at 16 37 47

  • Clearly indicate empty state (with "Value not set" or "Field name not set" texts)

Screenshot 2021-09-21 at 13 19 19

Screenshot 2021-09-21 at 13 19 41

  • Remove the previous hack that was sending a dummy ES query when submitting the form to validate the painless script
  • Guide the user when he has a casting error. He probably didn't set the runtime field type correctly.

Screenshot 2021-09-21 at 13 21 06

  • Handle the scenario where no documents could be fetched from the cluster (either because there aren't any or because the search request failed).

Screenshot 2021-09-22 at 12 15 51

  • The preview panel is now always open for runtime field. So if the user enter a name that matches one of the fields in _source we will preview its value.

Screenshot 2021-09-21 at 13 21 45

  • Fix a race condition when validating the painless syntax

Notes on implementation

kbn-monaco changes

I've updated the kbn-monaco package to expose a validation$ Observable for the consumer. This allows the consumer to get notified when the editor is validating and if it is valid. Previously we relied on a setTimeout to wait for the Painless validation to finish and I found it was not predictable and could easily break if for some reason the timeout changed. (01f73e3)

Form lib changes

  • Allow Promise provider instead of Observable for dynamic data: In [Form lib] Allow dynamic data to be passed to validator functions #109238 I've added the possibility to provide dynamic data to field validators. When working on this current PR I realised that I didn't take into account the fact that we need to be able to validate the field without first triggering a change on the field. My initial proposal to expose an Observable (https://github.com/elastic/kibana/pull/109238/files#diff-ef2d4424a31a8d8def4c1c2d9d756cfef9cc58b30837c1b6639e3419e572cdd9R35) did not take that into account. I reverted that change and decided to allow a Promise to be provided for dynamic data and leave the consumer in control of resolving that promise . (d0b48bf)

  • New isAsync option for validations: A nice feature of the form lib is that it lets you provide interchangeably synchronous or asynchronous validations, and it "just work". This simplicity comes at a cost though. In order to achieve that the lib first tries to execute all the validations synchronously and if it finds an asynchronous validation it re-run all the validations asynchronously. This has an undesired effect: async HTTP requests are called twice. :/ With the new isAsync option (which should always set to true for async validations for the problem stated) we can explicitly tell the form lib that there are some asynchronous validations and that will prevent running them twice. (68b77fe)

  • New onChange option to the useFormData() hook: In some rare cases (and this PR required it) we need to be immediately aware of a field value change before the validations are run. For that purpose I've added an optional onChange option that can be passed to the useFormData() hook. (272a78d)

// 99% of the time this is perfectly OK.

const [{ name }] = useFormData({ watch: 'name' });

useEffect(() => {
    // This will be executed **after** the validation are triggered on the name field
}, [name]);
// Sometimes we need to listen to field value change immediately

const onFormDataChange = useCallback(({ name }) => {
    // This is executed **before** the validation are triggered
}, []);

useFormData({ watch: 'name', onChange: onFormDataChange });
  • Fix stale state when getting form error messages. While doing loads of QA testing with error messages I realised that the form.getErrors() handler was returning stale error message and was not in sync with the fields errors. (36bbad8)

Handled edge cases where there are no documents in the cluster

The Painless script validation (through the _execute API) requires a document to be provided. Currently we don't support custom JSON to be sent by the user so we rely on retrieving sample documents from the cluster. This created a problem if there aren't any documents in the cluster or if fetching sample docs failed. In that case the validation would never resolve and the user wouldn't be able to save his runtime field. I added a flag to handle this scenario and bypass the script validation if there aren't any cluster data.

Note to reviewers

There are multiple asynchronous event that makes testing this PR challenging (but interesting! 😊). I hope to have solved all the possible race condition that those timeouts created.

  • The validation of the Painless syntax in the Monaco editor occurs after a debounce of 500ms
  • The validation of the Painless script occurs after the syntax is valid and after 500ms of any parameter change (the type, the script or the document)
  • Fetching a custom document ID has obviously its own latency. If it fails (e.g wrong ID) we should still be able to validate the painless script with the previously loaded document.

How to test

  • Navigate to index pattern management and select an index pattern
  • Click the "Add field" button
  • Give a name to the field and toggle "Set value" to display the script editor
  • Add the emit("hello" script (missing closing parentesis)
    --> The script should be invalid, no HTTP request. There should be a "Script error" badge
    in the preview. Clicking the "Save" button won't allow saving this field
  • Add the missing parentesis --> the script should be valid
  • Change the type to long. There script should not be valid, same behaviour as before. In the footer of the editor the reason should be displayed with an additional text: "Verify that you have correctly set the runtime field type." as this is a casting issue.
  • (Optional path): Toggle the "Set value" off --> The error should disappear and the script should be valid
  • Leave the error as is and change the Document ID in the preview (enter a wrong one).
    --> There should be an error fetching the document. The script should still be invalid and you should not be able to save the runtime field.
  • Leave the error fetching doc as is and change the runtime field type back to keyword.
    --> The script should now be valid, the error fetching doc should still be there but you should be able to save the runtime field.

Test the scenario where there are no documents in the cluster

The easiest is to update the field_preview_context.ts file. Under fetchSampleDocuments() change the following:

setClusterData({
  // documents: response ? response.rawResponse.hits.hits : [], (comment this line)
  documents: [], // add this
  currentIdx: 0,
});

Now do the same with throttling set to "Slow 3G" 😊 And play around different combinations of fetching doc, trying to save while validating the painless syntax or the painless script...

Copy link
Contributor

@flash1293 flash1293 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This PR should fix the flakiness here: #107854 (comment)

@sebelga sebelga force-pushed the runtime-field-editor/error-handling-2 branch from 179efa3 to c87e712 Compare September 21, 2021 10:28
@@ -217,14 +211,6 @@ const FieldEditorComponent = ({ field, onChange, onFormModifiedChange, syntaxErr
});
}, [updatedName, updatedType, updatedScript, isValueVisible, updatedFormat, updatePreviewParams]);

useEffect(() => {
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The preview panel is now always visible.

@LeeDr
Copy link

LeeDr commented Oct 6, 2021

I just filed this issue related to errors on permissions; #114034

We should have tests creating runtime fields using the minimum required privileges. See #114036

@LeeDr
Copy link

LeeDr commented Oct 6, 2021

Another suggestion: Should we allow saving a new or modified runtime field even of the user doesn't have the privs required for the Preview? It worked in 7.14. Maybe this is the change that is small enough to make it into 7.15.1 and unblock me and other users in my same blocked state. It could be it's own PR.

@sebelga sebelga force-pushed the runtime-field-editor/error-handling-2 branch 2 times, most recently from 1e336b5 to 82da806 Compare October 11, 2021 11:00
@sebelga sebelga force-pushed the runtime-field-editor/error-handling-2 branch 3 times, most recently from 8ba1ffd to cfaa779 Compare October 20, 2021 17:36
@kibanamachine
Copy link
Contributor

kibanamachine commented Oct 20, 2021

💔 Build Failed

Failed CI Steps


Test Failures

Kibana Pipeline / jest / Jest Tests.x-pack/plugins/lens/public/datatable_visualization/components.DatatableComponent it invokes executeTriggerActions with correct context on click on top value

Link to Jenkins

Standard Out

Failed Tests Reporter:
  - Test has not failed recently on tracked branches


Stack Trace

Error: thrown: "Exceeded timeout of 5000 ms for a test.
Use jest.setTimeout(newTimeout) to increase the timeout value, if this is a long-running test."
    at /var/lib/jenkins/workspace/elastic+kibana+pipeline-pull-request/kibana/x-pack/plugins/lens/public/datatable_visualization/components/table_basic.test.tsx:162:3
    at _dispatchDescribe (/var/lib/jenkins/workspace/elastic+kibana+pipeline-pull-request/kibana/node_modules/jest-circus/build/index.js:67:26)
    at describe (/var/lib/jenkins/workspace/elastic+kibana+pipeline-pull-request/kibana/node_modules/jest-circus/build/index.js:30:5)
    at Object.<anonymous> (/var/lib/jenkins/workspace/elastic+kibana+pipeline-pull-request/kibana/x-pack/plugins/lens/public/datatable_visualization/components/table_basic.test.tsx:96:1)
    at Runtime._execModule (/var/lib/jenkins/workspace/elastic+kibana+pipeline-pull-request/kibana/node_modules/jest-runtime/build/index.js:1299:24)
    at Runtime._loadModule (/var/lib/jenkins/workspace/elastic+kibana+pipeline-pull-request/kibana/node_modules/jest-runtime/build/index.js:898:12)
    at Runtime.requireModule (/var/lib/jenkins/workspace/elastic+kibana+pipeline-pull-request/kibana/node_modules/jest-runtime/build/index.js:746:10)
    at jestAdapter (/var/lib/jenkins/workspace/elastic+kibana+pipeline-pull-request/kibana/node_modules/jest-circus/build/legacy-code-todo-rewrite/jestAdapter.js:106:13)
    at processTicksAndRejections (node:internal/process/task_queues:96:5)
    at runTestInternal (/var/lib/jenkins/workspace/elastic+kibana+pipeline-pull-request/kibana/node_modules/jest-runner/build/runTest.js:380:16)
    at runTest (/var/lib/jenkins/workspace/elastic+kibana+pipeline-pull-request/kibana/node_modules/jest-runner/build/runTest.js:472:34)
    at Object.worker (/var/lib/jenkins/workspace/elastic+kibana+pipeline-pull-request/kibana/node_modules/jest-runner/build/testWorker.js:133:12)

Kibana Pipeline / general / X-Pack Saved Object Tagging Functional Tests.x-pack/test/saved_object_tagging/functional/tests/dashboard_integration·ts.saved objects tagging - functional tests dashboard integration editing allows to select tags for an existing dashboard

Link to Jenkins

Standard Out

Failed Tests Reporter:
  - Test has failed 2 times on tracked branches: https://github.com/elastic/kibana/issues/106547

[00:00:00]     │
[00:00:00]       └-: saved objects tagging - functional tests
[00:00:00]         └-> "before all" hook in "saved objects tagging - functional tests"
[00:00:00]         └-> "before all" hook in "saved objects tagging - functional tests"
[00:00:00]           │ debg creating role kibana_rbac_default_space_read_user
[00:00:00]           │ info [o.e.x.s.a.r.TransportPutRoleAction] [node-01] added role [kibana_rbac_default_space_read_user]
[00:00:00]           │ debg creating role kibana_rbac_default_space_write_user
[00:00:00]           │ info [o.e.x.s.a.r.TransportPutRoleAction] [node-01] added role [kibana_rbac_default_space_write_user]
[00:00:00]           │ debg creating role kibana_rbac_default_space_so_management_write_user
[00:00:00]           │ info [o.e.x.s.a.r.TransportPutRoleAction] [node-01] added role [kibana_rbac_default_space_so_management_write_user]
[00:00:00]           │ debg creating role kibana_rbac_default_space_so_management_read_user
[00:00:00]           │ info [o.e.x.s.a.r.TransportPutRoleAction] [node-01] added role [kibana_rbac_default_space_so_management_read_user]
[00:00:00]           │ debg creating role kibana_rbac_default_space_so_tagging_read_user
[00:00:00]           │ info [o.e.x.s.a.r.TransportPutRoleAction] [node-01] added role [kibana_rbac_default_space_so_tagging_read_user]
[00:00:00]           │ debg creating role kibana_rbac_default_space_so_tagging_write_user
[00:00:00]           │ info [o.e.x.s.a.r.TransportPutRoleAction] [node-01] added role [kibana_rbac_default_space_so_tagging_write_user]
[00:00:00]           │ debg creating role kibana_rbac_default_space_dashboard_read_user
[00:00:00]           │ info [o.e.x.s.a.r.TransportPutRoleAction] [node-01] added role [kibana_rbac_default_space_dashboard_read_user]
[00:00:00]           │ debg creating role kibana_rbac_default_space_dashboard_write_user
[00:00:00]           │ info [o.e.x.s.a.r.TransportPutRoleAction] [node-01] added role [kibana_rbac_default_space_dashboard_write_user]
[00:00:00]           │ debg creating role kibana_rbac_default_space_visualize_read_user
[00:00:00]           │ info [o.e.x.s.a.r.TransportPutRoleAction] [node-01] added role [kibana_rbac_default_space_visualize_read_user]
[00:00:00]           │ debg creating role kibana_rbac_default_space_visualize_write_user
[00:00:00]           │ info [o.e.x.s.a.r.TransportPutRoleAction] [node-01] added role [kibana_rbac_default_space_visualize_write_user]
[00:00:00]           │ debg creating role kibana_rbac_default_space_advanced_settings_read_user
[00:00:00]           │ info [o.e.x.s.a.r.TransportPutRoleAction] [node-01] added role [kibana_rbac_default_space_advanced_settings_read_user]
[00:00:00]           │ debg creating role kibana_rbac_default_space_maps_read_user
[00:00:00]           │ info [o.e.x.s.a.r.TransportPutRoleAction] [node-01] added role [kibana_rbac_default_space_maps_read_user]
[00:00:00]           │ debg creating user not_a_kibana_user
[00:00:00]           │ info [o.e.x.s.a.u.TransportPutUserAction] [node-01] added user [not_a_kibana_user]
[00:00:00]           │ debg created user not_a_kibana_user
[00:00:00]           │ debg creating user a_kibana_rbac_default_space_read_user
[00:00:00]           │ info [o.e.x.s.a.u.TransportPutUserAction] [node-01] added user [a_kibana_rbac_default_space_read_user]
[00:00:00]           │ debg created user a_kibana_rbac_default_space_read_user
[00:00:00]           │ debg creating user a_kibana_rbac_default_space_write_user
[00:00:00]           │ info [o.e.x.s.a.u.TransportPutUserAction] [node-01] added user [a_kibana_rbac_default_space_write_user]
[00:00:00]           │ debg created user a_kibana_rbac_default_space_write_user
[00:00:00]           │ debg creating user a_kibana_rbac_default_space_so_management_write_user
[00:00:00]           │ info [o.e.x.s.a.u.TransportPutUserAction] [node-01] added user [a_kibana_rbac_default_space_so_management_write_user]
[00:00:00]           │ debg created user a_kibana_rbac_default_space_so_management_write_user
[00:00:00]           │ debg creating user a_kibana_rbac_default_space_so_tagging_read_user
[00:00:01]           │ info [o.e.x.s.a.u.TransportPutUserAction] [node-01] added user [a_kibana_rbac_default_space_so_tagging_read_user]
[00:00:01]           │ debg created user a_kibana_rbac_default_space_so_tagging_read_user
[00:00:01]           │ debg creating user a_kibana_rbac_default_space_so_tagging_read_so_management_read_user
[00:00:01]           │ info [o.e.x.s.a.u.TransportPutUserAction] [node-01] added user [a_kibana_rbac_default_space_so_tagging_read_so_management_read_user]
[00:00:01]           │ debg created user a_kibana_rbac_default_space_so_tagging_read_so_management_read_user
[00:00:01]           │ debg creating user a_kibana_rbac_default_space_so_tagging_write_user
[00:00:01]           │ info [o.e.x.s.a.u.TransportPutUserAction] [node-01] added user [a_kibana_rbac_default_space_so_tagging_write_user]
[00:00:01]           │ debg created user a_kibana_rbac_default_space_so_tagging_write_user
[00:00:01]           │ debg creating user a_kibana_rbac_default_space_dashboard_read_user
[00:00:01]           │ info [o.e.x.s.a.u.TransportPutUserAction] [node-01] added user [a_kibana_rbac_default_space_dashboard_read_user]
[00:00:01]           │ debg created user a_kibana_rbac_default_space_dashboard_read_user
[00:00:01]           │ debg creating user a_kibana_rbac_default_space_visualize_read_user
[00:00:01]           │ info [o.e.x.s.a.u.TransportPutUserAction] [node-01] added user [a_kibana_rbac_default_space_visualize_read_user]
[00:00:01]           │ debg created user a_kibana_rbac_default_space_visualize_read_user
[00:00:01]           │ debg creating user a_kibana_rbac_default_space_dashboard_write_user
[00:00:01]           │ info [o.e.x.s.a.u.TransportPutUserAction] [node-01] added user [a_kibana_rbac_default_space_dashboard_write_user]
[00:00:01]           │ debg created user a_kibana_rbac_default_space_dashboard_write_user
[00:00:01]           │ debg creating user a_kibana_rbac_default_space_visualize_write_user
[00:00:01]           │ info [o.e.x.s.a.u.TransportPutUserAction] [node-01] added user [a_kibana_rbac_default_space_visualize_write_user]
[00:00:01]           │ debg created user a_kibana_rbac_default_space_visualize_write_user
[00:00:01]           │ debg creating user a_kibana_rbac_default_space_advanced_settings_read_user
[00:00:01]           │ info [o.e.x.s.a.u.TransportPutUserAction] [node-01] added user [a_kibana_rbac_default_space_advanced_settings_read_user]
[00:00:01]           │ debg created user a_kibana_rbac_default_space_advanced_settings_read_user
[00:00:01]           │ debg creating user a_kibana_rbac_default_space_maps_read_user
[00:00:02]           │ info [o.e.x.s.a.u.TransportPutUserAction] [node-01] added user [a_kibana_rbac_default_space_maps_read_user]
[00:00:02]           │ debg created user a_kibana_rbac_default_space_maps_read_user
[00:05:46]         └-: dashboard integration
[00:05:46]           └-> "before all" hook in "dashboard integration"
[00:05:46]           └-> "before all" hook in "dashboard integration"
[00:05:46]             │ info [x-pack/test/saved_object_tagging/common/fixtures/es_archiver/dashboard] Loading "mappings.json"
[00:05:46]             │ info [x-pack/test/saved_object_tagging/common/fixtures/es_archiver/dashboard] Loading "data.json"
[00:05:46]             │ info [o.e.c.m.MetadataDeleteIndexService] [node-01] [.kibana_task_manager_8.0.0_001/kOgp3Ml3Sl2Lsf8piA1NhA] deleting index
[00:05:46]             │ info [o.e.c.m.MetadataDeleteIndexService] [node-01] [.kibana_8.0.0_001/8xwBqf2KTSmqO0OtCqInDw] deleting index
[00:05:46]             │ info [o.e.c.m.MetadataDeleteIndexService] [node-01] [.kibana_1/sMFzNU1mSxCOOhzVwHMVxQ] deleting index
[00:05:46]             │ info [x-pack/test/saved_object_tagging/common/fixtures/es_archiver/dashboard] Deleted existing index ".kibana_8.0.0_001"
[00:05:46]             │ info [x-pack/test/saved_object_tagging/common/fixtures/es_archiver/dashboard] Deleted existing index ".kibana_task_manager_8.0.0_001"
[00:05:46]             │ info [x-pack/test/saved_object_tagging/common/fixtures/es_archiver/dashboard] Deleted existing index ".kibana_1"
[00:05:46]             │ info [o.e.c.m.MetadataCreateIndexService] [node-01] [.kibana_1] creating index, cause [api], templates [], shards [1]/[0]
[00:05:46]             │ info [o.e.c.r.a.AllocationService] [node-01] current.health="GREEN" message="Cluster health status changed from [YELLOW] to [GREEN] (reason: [shards started [[.kibana_1][0]]])." previous.health="YELLOW" reason="shards started [[.kibana_1][0]]"
[00:05:46]             │ info [x-pack/test/saved_object_tagging/common/fixtures/es_archiver/dashboard] Created index ".kibana_1"
[00:05:46]             │ debg [x-pack/test/saved_object_tagging/common/fixtures/es_archiver/dashboard] ".kibana_1" settings {"index":{"auto_expand_replicas":"0-1","number_of_replicas":"0","number_of_shards":"1"}}
[00:05:46]             │ info [x-pack/test/saved_object_tagging/common/fixtures/es_archiver/dashboard] Indexed 12 docs into ".kibana"
[00:05:46]             │ debg Migrating saved objects
[00:05:47]             │ proc [kibana] [2021-10-20T18:56:04.405+00:00][INFO ][savedobjects-service] [.kibana_task_manager] INIT -> CREATE_NEW_TARGET. took: 2ms.
[00:05:47]             │ proc [kibana] [2021-10-20T18:56:04.407+00:00][INFO ][savedobjects-service] [.kibana] INIT -> WAIT_FOR_YELLOW_SOURCE. took: 7ms.
[00:05:47]             │ proc [kibana] [2021-10-20T18:56:04.409+00:00][INFO ][savedobjects-service] [.kibana] WAIT_FOR_YELLOW_SOURCE -> CHECK_UNKNOWN_DOCUMENTS. took: 2ms.
[00:05:47]             │ info [o.e.c.m.MetadataCreateIndexService] [node-01] [.kibana_task_manager_8.0.0_001] creating index, cause [api], templates [], shards [1]/[1]
[00:05:47]             │ info [o.e.c.r.a.AllocationService] [node-01] updating number_of_replicas to [0] for indices [.kibana_task_manager_8.0.0_001]
[00:05:47]             │ proc [kibana] [2021-10-20T18:56:04.414+00:00][INFO ][savedobjects-service] [.kibana] CHECK_UNKNOWN_DOCUMENTS -> SET_SOURCE_WRITE_BLOCK. took: 5ms.
[00:05:47]             │ info [o.e.c.m.MetadataIndexStateService] [node-01] adding block write to indices [[.kibana_1/FLKMLtktSAyn70piDFscaQ]]
[00:05:47]             │ info [o.e.c.r.a.AllocationService] [node-01] current.health="GREEN" message="Cluster health status changed from [YELLOW] to [GREEN] (reason: [shards started [[.kibana_task_manager_8.0.0_001][0]]])." previous.health="YELLOW" reason="shards started [[.kibana_task_manager_8.0.0_001][0]]"
[00:05:47]             │ info [o.e.c.m.MetadataIndexStateService] [node-01] completed adding block write to indices [.kibana_1]
[00:05:47]             │ proc [kibana] [2021-10-20T18:56:04.483+00:00][INFO ][savedobjects-service] [.kibana_task_manager] CREATE_NEW_TARGET -> MARK_VERSION_INDEX_READY. took: 78ms.
[00:05:47]             │ proc [kibana] [2021-10-20T18:56:04.505+00:00][INFO ][savedobjects-service] [.kibana] SET_SOURCE_WRITE_BLOCK -> CALCULATE_EXCLUDE_FILTERS. took: 91ms.
[00:05:47]             │ proc [kibana] [2021-10-20T18:56:04.509+00:00][INFO ][savedobjects-service] [.kibana] CALCULATE_EXCLUDE_FILTERS -> CREATE_REINDEX_TEMP. took: 4ms.
[00:05:47]             │ proc [kibana] [2021-10-20T18:56:04.525+00:00][INFO ][savedobjects-service] [.kibana_task_manager] MARK_VERSION_INDEX_READY -> DONE. took: 42ms.
[00:05:47]             │ proc [kibana] [2021-10-20T18:56:04.525+00:00][INFO ][savedobjects-service] [.kibana_task_manager] Migration completed after 122ms
[00:05:47]             │ info [o.e.c.m.MetadataCreateIndexService] [node-01] [.kibana_8.0.0_reindex_temp] creating index, cause [api], templates [], shards [1]/[1]
[00:05:47]             │ info [o.e.c.r.a.AllocationService] [node-01] updating number_of_replicas to [0] for indices [.kibana_8.0.0_reindex_temp]
[00:05:47]             │ info [o.e.c.r.a.AllocationService] [node-01] current.health="GREEN" message="Cluster health status changed from [YELLOW] to [GREEN] (reason: [shards started [[.kibana_8.0.0_reindex_temp][0]]])." previous.health="YELLOW" reason="shards started [[.kibana_8.0.0_reindex_temp][0]]"
[00:05:47]             │ proc [kibana] [2021-10-20T18:56:04.590+00:00][INFO ][savedobjects-service] [.kibana] CREATE_REINDEX_TEMP -> REINDEX_SOURCE_TO_TEMP_OPEN_PIT. took: 81ms.
[00:05:47]             │ proc [kibana] [2021-10-20T18:56:04.594+00:00][INFO ][savedobjects-service] [.kibana] REINDEX_SOURCE_TO_TEMP_OPEN_PIT -> REINDEX_SOURCE_TO_TEMP_READ. took: 4ms.
[00:05:47]             │ proc [kibana] [2021-10-20T18:56:04.600+00:00][INFO ][savedobjects-service] [.kibana] Starting to process 12 documents.
[00:05:47]             │ proc [kibana] [2021-10-20T18:56:04.600+00:00][INFO ][savedobjects-service] [.kibana] REINDEX_SOURCE_TO_TEMP_READ -> REINDEX_SOURCE_TO_TEMP_TRANSFORM. took: 6ms.
[00:05:47]             │ proc [kibana] [2021-10-20T18:56:04.607+00:00][INFO ][savedobjects-service] [.kibana] REINDEX_SOURCE_TO_TEMP_TRANSFORM -> REINDEX_SOURCE_TO_TEMP_INDEX_BULK. took: 7ms.
[00:05:47]             │ info [o.e.c.m.MetadataMappingService] [node-01] [.kibana_8.0.0_reindex_temp/52rZZz-VRtaQHvmvkNq8oQ] update_mapping [_doc]
[00:05:47]             │ info [o.e.c.m.MetadataMappingService] [node-01] [.kibana_8.0.0_reindex_temp/52rZZz-VRtaQHvmvkNq8oQ] update_mapping [_doc]
[00:05:47]             │ info [o.e.c.m.MetadataMappingService] [node-01] [.kibana_8.0.0_reindex_temp/52rZZz-VRtaQHvmvkNq8oQ] update_mapping [_doc]
[00:05:47]             │ info [o.e.c.m.MetadataMappingService] [node-01] [.kibana_8.0.0_reindex_temp/52rZZz-VRtaQHvmvkNq8oQ] update_mapping [_doc]
[00:05:47]             │ info [o.e.c.m.MetadataMappingService] [node-01] [.kibana_8.0.0_reindex_temp/52rZZz-VRtaQHvmvkNq8oQ] update_mapping [_doc]
[00:05:47]             │ info [o.e.c.m.MetadataMappingService] [node-01] [.kibana_8.0.0_reindex_temp/52rZZz-VRtaQHvmvkNq8oQ] update_mapping [_doc]
[00:05:47]             │ info [o.e.c.m.MetadataMappingService] [node-01] [.kibana_8.0.0_reindex_temp/52rZZz-VRtaQHvmvkNq8oQ] update_mapping [_doc]
[00:05:47]             │ proc [kibana] [2021-10-20T18:56:04.798+00:00][INFO ][savedobjects-service] [.kibana] REINDEX_SOURCE_TO_TEMP_INDEX_BULK -> REINDEX_SOURCE_TO_TEMP_READ. took: 191ms.
[00:05:47]             │ proc [kibana] [2021-10-20T18:56:04.803+00:00][INFO ][savedobjects-service] [.kibana] Processed 12 documents out of 12.
[00:05:47]             │ proc [kibana] [2021-10-20T18:56:04.804+00:00][INFO ][savedobjects-service] [.kibana] REINDEX_SOURCE_TO_TEMP_READ -> REINDEX_SOURCE_TO_TEMP_CLOSE_PIT. took: 5ms.
[00:05:47]             │ proc [kibana] [2021-10-20T18:56:04.806+00:00][INFO ][savedobjects-service] [.kibana] REINDEX_SOURCE_TO_TEMP_CLOSE_PIT -> SET_TEMP_WRITE_BLOCK. took: 3ms.
[00:05:47]             │ info [o.e.c.m.MetadataIndexStateService] [node-01] adding block write to indices [[.kibana_8.0.0_reindex_temp/52rZZz-VRtaQHvmvkNq8oQ]]
[00:05:47]             │ info [o.e.c.m.MetadataIndexStateService] [node-01] completed adding block write to indices [.kibana_8.0.0_reindex_temp]
[00:05:47]             │ proc [kibana] [2021-10-20T18:56:04.847+00:00][INFO ][savedobjects-service] [.kibana] SET_TEMP_WRITE_BLOCK -> CLONE_TEMP_TO_TARGET. took: 41ms.
[00:05:47]             │ info [o.e.c.m.MetadataCreateIndexService] [node-01] applying create index request using existing index [.kibana_8.0.0_reindex_temp] metadata
[00:05:47]             │ info [o.e.c.m.MetadataCreateIndexService] [node-01] [.kibana_8.0.0_001] creating index, cause [clone_index], templates [], shards [1]/[1]
[00:05:47]             │ info [o.e.c.r.a.AllocationService] [node-01] updating number_of_replicas to [0] for indices [.kibana_8.0.0_001]
[00:05:47]             │ info [o.e.c.m.MetadataMappingService] [node-01] [.kibana_8.0.0_001/8hBQrwyxT3-wkEVgxqsCZQ] create_mapping
[00:05:47]             │ info [o.e.c.r.a.AllocationService] [node-01] current.health="GREEN" message="Cluster health status changed from [YELLOW] to [GREEN] (reason: [shards started [[.kibana_8.0.0_001][0]]])." previous.health="YELLOW" reason="shards started [[.kibana_8.0.0_001][0]]"
[00:05:47]             │ proc [kibana] [2021-10-20T18:56:04.948+00:00][INFO ][savedobjects-service] [.kibana] CLONE_TEMP_TO_TARGET -> REFRESH_TARGET. took: 101ms.
[00:05:47]             │ proc [kibana] [2021-10-20T18:56:04.951+00:00][INFO ][savedobjects-service] [.kibana] REFRESH_TARGET -> OUTDATED_DOCUMENTS_SEARCH_OPEN_PIT. took: 3ms.
[00:05:47]             │ proc [kibana] [2021-10-20T18:56:04.953+00:00][INFO ][savedobjects-service] [.kibana] OUTDATED_DOCUMENTS_SEARCH_OPEN_PIT -> OUTDATED_DOCUMENTS_SEARCH_READ. took: 2ms.
[00:05:47]             │ proc [kibana] [2021-10-20T18:56:04.958+00:00][INFO ][savedobjects-service] [.kibana] OUTDATED_DOCUMENTS_SEARCH_READ -> OUTDATED_DOCUMENTS_SEARCH_CLOSE_PIT. took: 5ms.
[00:05:47]             │ proc [kibana] [2021-10-20T18:56:04.960+00:00][INFO ][savedobjects-service] [.kibana] OUTDATED_DOCUMENTS_SEARCH_CLOSE_PIT -> UPDATE_TARGET_MAPPINGS. took: 2ms.
[00:05:47]             │ info [o.e.c.m.MetadataMappingService] [node-01] [.kibana_8.0.0_001/8hBQrwyxT3-wkEVgxqsCZQ] update_mapping [_doc]
[00:05:47]             │ proc [kibana] [2021-10-20T18:56:05.022+00:00][INFO ][savedobjects-service] [.kibana] UPDATE_TARGET_MAPPINGS -> UPDATE_TARGET_MAPPINGS_WAIT_FOR_TASK. took: 62ms.
[00:05:47]             │ info [o.e.t.LoggingTaskListener] [node-01] 7836 finished with response BulkByScrollResponse[took=23.3ms,timed_out=false,sliceId=null,updated=12,created=0,deleted=0,batches=1,versionConflicts=0,noops=0,retries=0,throttledUntil=0s,bulk_failures=[],search_failures=[]]
[00:05:47]             │ proc [kibana] [2021-10-20T18:56:05.128+00:00][INFO ][savedobjects-service] [.kibana] UPDATE_TARGET_MAPPINGS_WAIT_FOR_TASK -> MARK_VERSION_INDEX_READY. took: 106ms.
[00:05:47]             │ info [o.e.c.m.MetadataDeleteIndexService] [node-01] [.kibana_8.0.0_reindex_temp/52rZZz-VRtaQHvmvkNq8oQ] deleting index
[00:05:47]             │ proc [kibana] [2021-10-20T18:56:05.169+00:00][INFO ][savedobjects-service] [.kibana] MARK_VERSION_INDEX_READY -> DONE. took: 41ms.
[00:05:47]             │ proc [kibana] [2021-10-20T18:56:05.170+00:00][INFO ][savedobjects-service] [.kibana] Migration completed after 770ms
[00:05:47]             │ debg [x-pack/test/saved_object_tagging/common/fixtures/es_archiver/dashboard] Migrated Kibana index after loading Kibana data
[00:05:47]             │ debg [x-pack/test/saved_object_tagging/common/fixtures/es_archiver/dashboard] Ensured that default space exists in .kibana
[00:05:47]             │ info [x-pack/test/saved_object_tagging/common/fixtures/es_archiver/logstash_functional] Loading "mappings.json"
[00:05:47]             │ info [x-pack/test/saved_object_tagging/common/fixtures/es_archiver/logstash_functional] Loading "data.json.gz"
[00:05:47]             │ info [o.e.c.m.MetadataCreateIndexService] [node-01] [logstash-2015.09.22] creating index, cause [api], templates [], shards [1]/[0]
[00:05:47]             │ info [o.e.c.r.a.AllocationService] [node-01] current.health="GREEN" message="Cluster health status changed from [YELLOW] to [GREEN] (reason: [shards started [[logstash-2015.09.22][0]]])." previous.health="YELLOW" reason="shards started [[logstash-2015.09.22][0]]"
[00:05:47]             │ info [x-pack/test/saved_object_tagging/common/fixtures/es_archiver/logstash_functional] Created index "logstash-2015.09.22"
[00:05:47]             │ debg [x-pack/test/saved_object_tagging/common/fixtures/es_archiver/logstash_functional] "logstash-2015.09.22" settings {"index":{"analysis":{"analyzer":{"url":{"max_token_length":"1000","tokenizer":"uax_url_email","type":"standard"}}},"number_of_replicas":"0","number_of_shards":"1"}}
[00:05:47]             │ info [o.e.c.m.MetadataCreateIndexService] [node-01] [logstash-2015.09.20] creating index, cause [api], templates [], shards [1]/[0]
[00:05:47]             │ info [o.e.c.r.a.AllocationService] [node-01] current.health="GREEN" message="Cluster health status changed from [YELLOW] to [GREEN] (reason: [shards started [[logstash-2015.09.20][0]]])." previous.health="YELLOW" reason="shards started [[logstash-2015.09.20][0]]"
[00:05:47]             │ info [x-pack/test/saved_object_tagging/common/fixtures/es_archiver/logstash_functional] Created index "logstash-2015.09.20"
[00:05:47]             │ debg [x-pack/test/saved_object_tagging/common/fixtures/es_archiver/logstash_functional] "logstash-2015.09.20" settings {"index":{"analysis":{"analyzer":{"url":{"max_token_length":"1000","tokenizer":"uax_url_email","type":"standard"}}},"number_of_replicas":"0","number_of_shards":"1"}}
[00:05:47]             │ info [o.e.c.m.MetadataCreateIndexService] [node-01] [logstash-2015.09.21] creating index, cause [api], templates [], shards [1]/[0]
[00:05:47]             │ info [o.e.c.r.a.AllocationService] [node-01] current.health="GREEN" message="Cluster health status changed from [YELLOW] to [GREEN] (reason: [shards started [[logstash-2015.09.21][0]]])." previous.health="YELLOW" reason="shards started [[logstash-2015.09.21][0]]"
[00:05:47]             │ info [x-pack/test/saved_object_tagging/common/fixtures/es_archiver/logstash_functional] Created index "logstash-2015.09.21"
[00:05:47]             │ debg [x-pack/test/saved_object_tagging/common/fixtures/es_archiver/logstash_functional] "logstash-2015.09.21" settings {"index":{"analysis":{"analyzer":{"url":{"max_token_length":"1000","tokenizer":"uax_url_email","type":"standard"}}},"number_of_replicas":"0","number_of_shards":"1"}}
[00:05:57]             │ info progress: 12036
[00:05:59]             │ info [x-pack/test/saved_object_tagging/common/fixtures/es_archiver/logstash_functional] Indexed 4633 docs into "logstash-2015.09.22"
[00:05:59]             │ info [x-pack/test/saved_object_tagging/common/fixtures/es_archiver/logstash_functional] Indexed 4757 docs into "logstash-2015.09.20"
[00:05:59]             │ info [x-pack/test/saved_object_tagging/common/fixtures/es_archiver/logstash_functional] Indexed 4614 docs into "logstash-2015.09.21"
[00:07:39]           └-: editing
[00:07:39]             └-> "before all" hook for "allows to select tags for an existing dashboard"
[00:07:39]             └-> allows to select tags for an existing dashboard
[00:07:39]               └-> "before each" hook: global before each for "allows to select tags for an existing dashboard"
[00:07:39]               └-> "before each" hook for "allows to select tags for an existing dashboard"
[00:07:39]                 │ debg navigating to dashboard url: http://localhost:6191/app/dashboards#/list
[00:07:39]                 │ debg navigate to: http://localhost:6191/app/dashboards#/list
[00:07:39]                 │ debg browser[INFO] http://localhost:6191/app/dashboards?_t=1634756276541#/list 281 Refused to execute inline script because it violates the following Content Security Policy directive: "script-src 'unsafe-eval' 'self'". Either the 'unsafe-inline' keyword, a hash ('sha256-P5polb1UreUSOe5V/Pv7tc+yeZuJXiOi/3fqhGsU7BE='), or a nonce ('nonce-...') is required to enable inline execution.
[00:07:39]                 │
[00:07:39]                 │ debg browser[INFO] http://localhost:6191/bootstrap.js 41:19 "^ A single error about an inline script not firing due to content security policy is expected!"
[00:07:39]                 │ debg ... sleep(700) start
[00:07:40]                 │ debg ... sleep(700) end
[00:07:40]                 │ debg returned from get, calling refresh
[00:07:40]                 │ debg browser[INFO] http://localhost:6191/app/dashboards?_t=1634756276541#/list 281 Refused to execute inline script because it violates the following Content Security Policy directive: "script-src 'unsafe-eval' 'self'". Either the 'unsafe-inline' keyword, a hash ('sha256-P5polb1UreUSOe5V/Pv7tc+yeZuJXiOi/3fqhGsU7BE='), or a nonce ('nonce-...') is required to enable inline execution.
[00:07:40]                 │
[00:07:40]                 │ debg browser[INFO] http://localhost:6191/bootstrap.js 41:19 "^ A single error about an inline script not firing due to content security policy is expected!"
[00:07:41]                 │ debg currentUrl = http://localhost:6191/app/dashboards#/list
[00:07:41]                 │          appUrl = http://localhost:6191/app/dashboards#/list
[00:07:41]                 │ debg TestSubjects.find(kibanaChrome)
[00:07:41]                 │ debg Find.findByCssSelector('[data-test-subj="kibanaChrome"]') with timeout=60000
[00:07:41]                 │ debg ... sleep(501) start
[00:07:42]                 │ debg ... sleep(501) end
[00:07:42]                 │ debg in navigateTo url = http://localhost:6191/app/dashboards#/list?_g=(filters:!(),refreshInterval:(pause:!t,value:0),time:(from:now-15m,to:now))
[00:07:42]                 │ debg --- retry.tryForTime error: URL changed, waiting for it to settle
[00:07:42]                 │ debg ... sleep(501) start
[00:07:43]                 │ debg ... sleep(501) end
[00:07:43]                 │ debg in navigateTo url = http://localhost:6191/app/dashboards#/list?_g=(filters:!(),refreshInterval:(pause:!t,value:0),time:(from:now-15m,to:now))
[00:07:43]                 │ debg gotoDashboardLandingPage
[00:07:43]                 │ debg onDashboardLandingPage
[00:07:43]                 │ debg TestSubjects.exists(dashboardLandingPage)
[00:07:43]                 │ debg Find.existsByDisplayedByCssSelector('[data-test-subj="dashboardLandingPage"]') with timeout=5000
[00:07:43]                 │ debg Find.existsByDisplayedByCssSelector('[data-test-subj="itemsInMemTable"]:not(.euiBasicTable-loading)') with timeout=2500
[00:07:43]               │ debg TestSubjects.click(dashboardListingTitleLink-dashboard-4-with-real-data-(tag-1))
[00:07:43]               │ debg Find.clickByCssSelector('[data-test-subj="dashboardListingTitleLink-dashboard-4-with-real-data-(tag-1)"]') with timeout=10000
[00:07:43]               │ debg Find.findByCssSelector('[data-test-subj="dashboardListingTitleLink-dashboard-4-with-real-data-(tag-1)"]') with timeout=10000
[00:07:43]               │ debg Switching to edit mode
[00:07:43]               │ debg TestSubjects.exists(dashboardEditMode)
[00:07:43]               │ debg Find.existsByDisplayedByCssSelector('[data-test-subj="dashboardEditMode"]') with timeout=2500
[00:07:43]               │ debg browser[INFO] http://localhost:6191/app/dashboards#/view/61c58ad0-3dd3-11e8-b2b9-5d5dc1715159?_g=(filters:!()) 281 Refused to execute inline script because it violates the following Content Security Policy directive: "script-src 'unsafe-eval' 'self'". Either the 'unsafe-inline' keyword, a hash ('sha256-P5polb1UreUSOe5V/Pv7tc+yeZuJXiOi/3fqhGsU7BE='), or a nonce ('nonce-...') is required to enable inline execution.
[00:07:43]               │
[00:07:43]               │ debg browser[INFO] http://localhost:6191/bootstrap.js 41:19 "^ A single error about an inline script not firing due to content security policy is expected!"
[00:07:45]               │ debg --- retry.tryForTime error: [data-test-subj="dashboardEditMode"] is not displayed
[00:07:45]               │ debg browser[WARNING] http://localhost:6191/47435/bundles/kbn-ui-shared-deps-npm/kbn-ui-shared-deps-npm.dll.js 20:68219 "Deprecation warning: value provided is not in a recognized RFC2822 or ISO format. moment construction falls back to js Date(), which is not reliable across all browsers and versions. Non RFC2822/ISO date formats are discouraged and will be removed in an upcoming major release. Please refer to http://momentjs.com/guides/#/warnings/js-date/ for more info.
[00:07:45]               │      Arguments: 
[00:07:45]               │      [0] _isAMomentObject: true, _isUTC: false, _useUTC: false, _l: undefined, _i: Mon Apr 09 2018 17:56:08 GMT-0400, _f: undefined, _strict: undefined, _locale: [object Object]
[00:07:45]               │      Error
[00:07:45]               │          at Function.createFromInputFallback (http://localhost:6191/47435/bundles/kbn-ui-shared-deps-npm/kbn-ui-shared-deps-npm.dll.js:21:68648)
[00:07:45]               │          at http://localhost:6191/47435/bundles/kbn-ui-shared-deps-npm/kbn-ui-shared-deps-npm.dll.js:21:88824
[00:07:45]               │          at http://localhost:6191/47435/bundles/kbn-ui-shared-deps-npm/kbn-ui-shared-deps-npm.dll.js:21:88875
[00:07:45]               │          at Ot (http://localhost:6191/47435/bundles/kbn-ui-shared-deps-npm/kbn-ui-shared-deps-npm.dll.js:21:89187)
[00:07:45]               │          at wt (http://localhost:6191/47435/bundles/kbn-ui-shared-deps-npm/kbn-ui-shared-deps-npm.dll.js:21:89448)
[00:07:45]               │          at Mt (http://localhost:6191/47435/bundles/kbn-ui-shared-deps-npm/kbn-ui-shared-deps-npm.dll.js:21:89530)
[00:07:45]               │          at r (http://localhost:6191/47435/bundles/kbn-ui-shared-deps-npm/kbn-ui-shared-deps-npm.dll.js:21:65570)
[00:07:45]               │          at Object.l [as parse] (http://localhost:6191/47435/bundles/kbn-ui-shared-deps-npm/kbn-ui-shared-deps-npm.dll.js:340:135143)
[00:07:45]               │          at http://localhost:6191/47435/bundles/plugin/data/kibana/data.plugin.js:1:130901
[00:07:45]               │          at t._next (http://localhost:6191/47435/bundles/plugin/data/kibana/data.plugin.js:1:130975)"
[00:07:46]               │ warn browser[SEVERE] http://localhost:6191/api/index_patterns/_fields_for_wildcard?pattern=animals-*&meta_fields=_source&meta_fields=_id&meta_fields=_type&meta_fields=_index&meta_fields=_score - Failed to load resource: the server responded with a status of 404 (Not Found)
[00:07:46]               │ debg Waiting up to 20000ms for in edit mode...
[00:07:46]               │ debg TestSubjects.findAll(embeddablePanel)
[00:07:46]               │ debg Find.allByCssSelector('[data-test-subj="embeddablePanel"]') with timeout=2500
[00:07:46]               │ debg TestSubjects.findAll(embeddablePanelToggleMenuIcon)
[00:07:46]               │ debg Find.allByCssSelector('[data-test-subj="embeddablePanelToggleMenuIcon"]') with timeout=2500
[00:07:46]               │ info [o.e.c.m.MetadataCreateIndexService] [node-01] [.async-search] creating index, cause [auto(bulk api)], templates [], shards [1]/[0]
[00:07:46]               │ info [o.e.c.r.a.AllocationService] [node-01] current.health="GREEN" message="Cluster health status changed from [YELLOW] to [GREEN] (reason: [shards started [[.async-search][0]]])." previous.health="YELLOW" reason="shards started [[.async-search][0]]"
[00:07:47]               │ debg TestSubjects.findAll(embeddablePanel)
[00:07:47]               │ debg Find.allByCssSelector('[data-test-subj="embeddablePanel"]') with timeout=2500
[00:07:47]               │ debg TestSubjects.findAll(embeddablePanelToggleMenuIcon)
[00:07:47]               │ debg Find.allByCssSelector('[data-test-subj="embeddablePanelToggleMenuIcon"]') with timeout=2500
[00:07:47]               │ debg TestSubjects.findAll(embeddablePanel)
[00:07:47]               │ debg Find.allByCssSelector('[data-test-subj="embeddablePanel"]') with timeout=2500
[00:07:47]               │ info [o.e.c.m.MetadataMappingService] [node-01] [.kibana_8.0.0_001/8hBQrwyxT3-wkEVgxqsCZQ] update_mapping [_doc]
[00:07:47]               │ debg TestSubjects.findAll(embeddablePanelToggleMenuIcon)
[00:07:47]               │ debg Find.allByCssSelector('[data-test-subj="embeddablePanelToggleMenuIcon"]') with timeout=2500
[00:07:48]               │ debg TestSubjects.findAll(embeddablePanel)
[00:07:48]               │ debg Find.allByCssSelector('[data-test-subj="embeddablePanel"]') with timeout=2500
[00:07:48]               │ debg TestSubjects.findAll(embeddablePanelToggleMenuIcon)
[00:07:48]               │ debg Find.allByCssSelector('[data-test-subj="embeddablePanelToggleMenuIcon"]') with timeout=2500
[00:07:48]               │ debg TestSubjects.findAll(embeddablePanel)
[00:07:48]               │ debg Find.allByCssSelector('[data-test-subj="embeddablePanel"]') with timeout=2500
[00:07:48]               │ debg TestSubjects.findAll(embeddablePanelToggleMenuIcon)
[00:07:48]               │ debg Find.allByCssSelector('[data-test-subj="embeddablePanelToggleMenuIcon"]') with timeout=2500
[00:07:49]               │ debg TestSubjects.findAll(embeddablePanel)
[00:07:49]               │ debg Find.allByCssSelector('[data-test-subj="embeddablePanel"]') with timeout=2500
[00:07:49]               │ debg TestSubjects.findAll(embeddablePanelToggleMenuIcon)
[00:07:49]               │ debg Find.allByCssSelector('[data-test-subj="embeddablePanelToggleMenuIcon"]') with timeout=2500
[00:07:49]               │ debg TestSubjects.findAll(embeddablePanel)
[00:07:49]               │ debg Find.allByCssSelector('[data-test-subj="embeddablePanel"]') with timeout=2500
[00:07:49]               │ debg TestSubjects.findAll(embeddablePanelToggleMenuIcon)
[00:07:49]               │ debg Find.allByCssSelector('[data-test-subj="embeddablePanelToggleMenuIcon"]') with timeout=2500
[00:07:50]               │ debg TestSubjects.findAll(embeddablePanel)
[00:07:50]               │ debg Find.allByCssSelector('[data-test-subj="embeddablePanel"]') with timeout=2500
[00:07:50]               │ debg TestSubjects.findAll(embeddablePanelToggleMenuIcon)
[00:07:50]               │ debg Find.allByCssSelector('[data-test-subj="embeddablePanelToggleMenuIcon"]') with timeout=2500
[00:07:51]               │ debg TestSubjects.findAll(embeddablePanel)
[00:07:51]               │ debg Find.allByCssSelector('[data-test-subj="embeddablePanel"]') with timeout=2500
[00:07:51]               │ debg TestSubjects.findAll(embeddablePanelToggleMenuIcon)
[00:07:51]               │ debg Find.allByCssSelector('[data-test-subj="embeddablePanelToggleMenuIcon"]') with timeout=2500
[00:07:51]               │ debg TestSubjects.findAll(embeddablePanel)
[00:07:51]               │ debg Find.allByCssSelector('[data-test-subj="embeddablePanel"]') with timeout=2500
[00:07:51]               │ info [o.e.c.m.MetadataMappingService] [node-01] [.kibana_8.0.0_001/8hBQrwyxT3-wkEVgxqsCZQ] update_mapping [_doc]
[00:07:51]               │ debg TestSubjects.findAll(embeddablePanelToggleMenuIcon)
[00:07:51]               │ debg Find.allByCssSelector('[data-test-subj="embeddablePanelToggleMenuIcon"]') with timeout=2500
[00:07:52]               │ debg TestSubjects.findAll(embeddablePanel)
[00:07:52]               │ debg Find.allByCssSelector('[data-test-subj="embeddablePanel"]') with timeout=2500
[00:07:52]               │ debg TestSubjects.findAll(embeddablePanelToggleMenuIcon)
[00:07:52]               │ debg Find.allByCssSelector('[data-test-subj="embeddablePanelToggleMenuIcon"]') with timeout=2500
[00:07:52]               │ debg TestSubjects.findAll(embeddablePanel)
[00:07:52]               │ debg Find.allByCssSelector('[data-test-subj="embeddablePanel"]') with timeout=2500
[00:07:52]               │ debg TestSubjects.findAll(embeddablePanelToggleMenuIcon)
[00:07:52]               │ debg Find.allByCssSelector('[data-test-subj="embeddablePanelToggleMenuIcon"]') with timeout=2500
[00:07:53]               │ debg TestSubjects.findAll(embeddablePanel)
[00:07:53]               │ debg Find.allByCssSelector('[data-test-subj="embeddablePanel"]') with timeout=2500
[00:07:53]               │ debg TestSubjects.findAll(embeddablePanelToggleMenuIcon)
[00:07:53]               │ debg Find.allByCssSelector('[data-test-subj="embeddablePanelToggleMenuIcon"]') with timeout=2500
[00:07:53]               │ debg TestSubjects.findAll(embeddablePanel)
[00:07:53]               │ debg Find.allByCssSelector('[data-test-subj="embeddablePanel"]') with timeout=2500
[00:07:53]               │ debg TestSubjects.findAll(embeddablePanelToggleMenuIcon)
[00:07:53]               │ debg Find.allByCssSelector('[data-test-subj="embeddablePanelToggleMenuIcon"]') with timeout=2500
[00:07:54]               │ debg TestSubjects.findAll(embeddablePanel)
[00:07:54]               │ debg Find.allByCssSelector('[data-test-subj="embeddablePanel"]') with timeout=2500
[00:07:54]               │ debg TestSubjects.findAll(embeddablePanelToggleMenuIcon)
[00:07:54]               │ debg Find.allByCssSelector('[data-test-subj="embeddablePanelToggleMenuIcon"]') with timeout=2500
[00:07:55]               │ debg TestSubjects.findAll(embeddablePanel)
[00:07:55]               │ debg Find.allByCssSelector('[data-test-subj="embeddablePanel"]') with timeout=2500
[00:07:55]               │ debg TestSubjects.findAll(embeddablePanelToggleMenuIcon)
[00:07:55]               │ debg Find.allByCssSelector('[data-test-subj="embeddablePanelToggleMenuIcon"]') with timeout=2500
[00:07:55]               │ debg TestSubjects.findAll(embeddablePanel)
[00:07:55]               │ debg Find.allByCssSelector('[data-test-subj="embeddablePanel"]') with timeout=2500
[00:07:55]               │ debg TestSubjects.findAll(embeddablePanelToggleMenuIcon)
[00:07:55]               │ debg Find.allByCssSelector('[data-test-subj="embeddablePanelToggleMenuIcon"]') with timeout=2500
[00:07:56]               │ debg TestSubjects.findAll(embeddablePanel)
[00:07:56]               │ debg Find.allByCssSelector('[data-test-subj="embeddablePanel"]') with timeout=2500
[00:07:56]               │ debg TestSubjects.findAll(embeddablePanelToggleMenuIcon)
[00:07:56]               │ debg Find.allByCssSelector('[data-test-subj="embeddablePanelToggleMenuIcon"]') with timeout=2500
[00:07:56]               │ debg TestSubjects.findAll(embeddablePanel)
[00:07:56]               │ debg Find.allByCssSelector('[data-test-subj="embeddablePanel"]') with timeout=2500
[00:07:56]               │ debg TestSubjects.findAll(embeddablePanelToggleMenuIcon)
[00:07:56]               │ debg Find.allByCssSelector('[data-test-subj="embeddablePanelToggleMenuIcon"]') with timeout=2500
[00:07:57]               │ debg TestSubjects.findAll(embeddablePanel)
[00:07:57]               │ debg Find.allByCssSelector('[data-test-subj="embeddablePanel"]') with timeout=2500
[00:07:57]               │ debg TestSubjects.findAll(embeddablePanelToggleMenuIcon)
[00:07:57]               │ debg Find.allByCssSelector('[data-test-subj="embeddablePanelToggleMenuIcon"]') with timeout=2500
[00:07:57]               │ debg TestSubjects.findAll(embeddablePanel)
[00:07:57]               │ debg Find.allByCssSelector('[data-test-subj="embeddablePanel"]') with timeout=2500
[00:07:57]               │ debg TestSubjects.findAll(embeddablePanelToggleMenuIcon)
[00:07:57]               │ debg Find.allByCssSelector('[data-test-subj="embeddablePanelToggleMenuIcon"]') with timeout=2500
[00:07:58]               │ debg TestSubjects.findAll(embeddablePanel)
[00:07:58]               │ debg Find.allByCssSelector('[data-test-subj="embeddablePanel"]') with timeout=2500
[00:07:58]               │ debg TestSubjects.findAll(embeddablePanelToggleMenuIcon)
[00:07:58]               │ debg Find.allByCssSelector('[data-test-subj="embeddablePanelToggleMenuIcon"]') with timeout=2500
[00:07:59]               │ debg TestSubjects.findAll(embeddablePanel)
[00:07:59]               │ debg Find.allByCssSelector('[data-test-subj="embeddablePanel"]') with timeout=2500
[00:07:59]               │ debg TestSubjects.findAll(embeddablePanelToggleMenuIcon)
[00:07:59]               │ debg Find.allByCssSelector('[data-test-subj="embeddablePanelToggleMenuIcon"]') with timeout=2500
[00:07:59]               │ debg TestSubjects.findAll(embeddablePanel)
[00:07:59]               │ debg Find.allByCssSelector('[data-test-subj="embeddablePanel"]') with timeout=2500
[00:07:59]               │ debg TestSubjects.findAll(embeddablePanelToggleMenuIcon)
[00:07:59]               │ debg Find.allByCssSelector('[data-test-subj="embeddablePanelToggleMenuIcon"]') with timeout=2500
[00:08:00]               │ debg TestSubjects.findAll(embeddablePanel)
[00:08:00]               │ debg Find.allByCssSelector('[data-test-subj="embeddablePanel"]') with timeout=2500
[00:08:00]               │ debg TestSubjects.findAll(embeddablePanelToggleMenuIcon)
[00:08:00]               │ debg Find.allByCssSelector('[data-test-subj="embeddablePanelToggleMenuIcon"]') with timeout=2500
[00:08:00]               │ debg TestSubjects.findAll(embeddablePanel)
[00:08:00]               │ debg Find.allByCssSelector('[data-test-subj="embeddablePanel"]') with timeout=2500
[00:08:00]               │ debg TestSubjects.findAll(embeddablePanelToggleMenuIcon)
[00:08:00]               │ debg Find.allByCssSelector('[data-test-subj="embeddablePanelToggleMenuIcon"]') with timeout=2500
[00:08:01]               │ debg TestSubjects.findAll(embeddablePanel)
[00:08:01]               │ debg Find.allByCssSelector('[data-test-subj="embeddablePanel"]') with timeout=2500
[00:08:01]               │ debg TestSubjects.findAll(embeddablePanelToggleMenuIcon)
[00:08:01]               │ debg Find.allByCssSelector('[data-test-subj="embeddablePanelToggleMenuIcon"]') with timeout=2500
[00:08:01]               │ debg TestSubjects.findAll(embeddablePanel)
[00:08:01]               │ debg Find.allByCssSelector('[data-test-subj="embeddablePanel"]') with timeout=2500
[00:08:01]               │ debg TestSubjects.findAll(embeddablePanelToggleMenuIcon)
[00:08:01]               │ debg Find.allByCssSelector('[data-test-subj="embeddablePanelToggleMenuIcon"]') with timeout=2500
[00:08:02]               │ debg TestSubjects.findAll(embeddablePanel)
[00:08:02]               │ debg Find.allByCssSelector('[data-test-subj="embeddablePanel"]') with timeout=2500
[00:08:02]               │ debg TestSubjects.findAll(embeddablePanelToggleMenuIcon)
[00:08:02]               │ debg Find.allByCssSelector('[data-test-subj="embeddablePanelToggleMenuIcon"]') with timeout=2500
[00:08:02]               │ debg TestSubjects.findAll(embeddablePanel)
[00:08:02]               │ debg Find.allByCssSelector('[data-test-subj="embeddablePanel"]') with timeout=2500
[00:08:03]               │ debg TestSubjects.findAll(embeddablePanelToggleMenuIcon)
[00:08:03]               │ debg Find.allByCssSelector('[data-test-subj="embeddablePanelToggleMenuIcon"]') with timeout=2500
[00:08:03]               │ debg TestSubjects.findAll(embeddablePanel)
[00:08:03]               │ debg Find.allByCssSelector('[data-test-subj="embeddablePanel"]') with timeout=2500
[00:08:03]               │ debg TestSubjects.findAll(embeddablePanelToggleMenuIcon)
[00:08:03]               │ debg Find.allByCssSelector('[data-test-subj="embeddablePanelToggleMenuIcon"]') with timeout=2500
[00:08:04]               │ debg TestSubjects.findAll(embeddablePanel)
[00:08:04]               │ debg Find.allByCssSelector('[data-test-subj="embeddablePanel"]') with timeout=2500
[00:08:04]               │ debg TestSubjects.findAll(embeddablePanelToggleMenuIcon)
[00:08:04]               │ debg Find.allByCssSelector('[data-test-subj="embeddablePanelToggleMenuIcon"]') with timeout=2500
[00:08:04]               │ debg TestSubjects.findAll(embeddablePanel)
[00:08:04]               │ debg Find.allByCssSelector('[data-test-subj="embeddablePanel"]') with timeout=2500
[00:08:04]               │ debg TestSubjects.findAll(embeddablePanelToggleMenuIcon)
[00:08:04]               │ debg Find.allByCssSelector('[data-test-subj="embeddablePanelToggleMenuIcon"]') with timeout=2500
[00:08:05]               │ debg TestSubjects.findAll(embeddablePanel)
[00:08:05]               │ debg Find.allByCssSelector('[data-test-subj="embeddablePanel"]') with timeout=2500
[00:08:05]               │ debg TestSubjects.findAll(embeddablePanelToggleMenuIcon)
[00:08:05]               │ debg Find.allByCssSelector('[data-test-subj="embeddablePanelToggleMenuIcon"]') with timeout=2500
[00:08:05]               │ debg TestSubjects.findAll(embeddablePanel)
[00:08:05]               │ debg Find.allByCssSelector('[data-test-subj="embeddablePanel"]') with timeout=2500
[00:08:05]               │ debg TestSubjects.findAll(embeddablePanelToggleMenuIcon)
[00:08:05]               │ debg Find.allByCssSelector('[data-test-subj="embeddablePanelToggleMenuIcon"]') with timeout=2500
[00:08:06]               │ info Taking screenshot "/dev/shm/workspace/parallel/9/kibana/x-pack/test/saved_object_tagging/functional/screenshots/failure/saved objects tagging - functional tests dashboard integration editing allows to select tags for an existing dashboard.png"
[00:08:06]               │ info Current URL is: http://localhost:6191/app/dashboards#/view/61c58ad0-3dd3-11e8-b2b9-5d5dc1715159?_g=(filters:!())
[00:08:06]               │ info Saving page source to: /dev/shm/workspace/parallel/9/kibana/x-pack/test/saved_object_tagging/functional/failure_debug/html/saved objects tagging - functional tests dashboard integration editing allows to select tags for an existing dashboard.html
[00:08:06]               └- ✖ fail: saved objects tagging - functional tests dashboard integration editing allows to select tags for an existing dashboard
[00:08:06]               │      Error: timed out waiting for in edit mode
[00:08:06]               │       at onFailure (/dev/shm/workspace/parallel/9/kibana/test/common/services/retry/retry_for_truthy.ts:39:13)
[00:08:06]               │       at retryForSuccess (/dev/shm/workspace/parallel/9/kibana/test/common/services/retry/retry_for_success.ts:59:13)
[00:08:06]               │       at retryForTruthy (/dev/shm/workspace/parallel/9/kibana/test/common/services/retry/retry_for_truthy.ts:27:3)
[00:08:06]               │       at RetryService.waitFor (/dev/shm/workspace/parallel/9/kibana/test/common/services/retry/retry.ts:59:5)
[00:08:06]               │       at DashboardPageObject.switchToEditMode (/dev/shm/workspace/parallel/9/kibana/test/functional/page_objects/dashboard_page.ts:257:5)
[00:08:06]               │       at Context.<anonymous> (test/saved_object_tagging/functional/tests/dashboard_integration.ts:166:9)
[00:08:06]               │       at Object.apply (/dev/shm/workspace/parallel/9/kibana/node_modules/@kbn/test/target_node/functional_test_runner/lib/mocha/wrap_function.js:87:16)
[00:08:06]               │ 
[00:08:06]               │ 

Stack Trace

Error: timed out waiting for in edit mode
    at onFailure (/dev/shm/workspace/parallel/9/kibana/test/common/services/retry/retry_for_truthy.ts:39:13)
    at retryForSuccess (/dev/shm/workspace/parallel/9/kibana/test/common/services/retry/retry_for_success.ts:59:13)
    at retryForTruthy (/dev/shm/workspace/parallel/9/kibana/test/common/services/retry/retry_for_truthy.ts:27:3)
    at RetryService.waitFor (/dev/shm/workspace/parallel/9/kibana/test/common/services/retry/retry.ts:59:5)
    at DashboardPageObject.switchToEditMode (/dev/shm/workspace/parallel/9/kibana/test/functional/page_objects/dashboard_page.ts:257:5)
    at Context.<anonymous> (test/saved_object_tagging/functional/tests/dashboard_integration.ts:166:9)
    at Object.apply (/dev/shm/workspace/parallel/9/kibana/node_modules/@kbn/test/target_node/functional_test_runner/lib/mocha/wrap_function.js:87:16)

Metrics [docs]

Module Count

Fewer modules leads to a faster build time

id before after diff
esUiShared 170 171 +1
indexPatternFieldEditor 145 147 +2
total +3

Public APIs missing comments

Total count of every public API that lacks a comment. Target amount is 0. Run node scripts/build_api_docs --plugin [yourplugin] --stats comments for more detailed information.

id before after diff
@kbn/monaco 38 52 +14

Any counts in public APIs

Total count of every any typed public API. Target amount is 0. Run node scripts/build_api_docs --plugin [yourplugin] --stats any for more detailed information.

id before after diff
@kbn/monaco 0 1 +1

Async chunks

Total size of all lazy-loaded chunks that will be downloaded as the user navigates the app

id before after diff
indexPatternFieldEditor 151.5KB 155.2KB +3.7KB
osquery 866.3KB 866.3KB -2.0B
total +3.7KB

Public APIs missing exports

Total count of every type that is part of your API that should be exported but is not. This will cause broken links in the API documentation system. Target amount is 0. Run node scripts/build_api_docs --plugin [yourplugin] --stats exports for more detailed information.

id before after diff
@kbn/monaco 3 2 -1

Page load bundle

Size of the bundles that are downloaded on every page load. Target size is below 100kb

id before after diff
esUiShared 124.5KB 124.8KB +230.0B
indexPatternFieldEditor 19.0KB 19.1KB +111.0B
kbnUiSharedDeps-srcJs 3.8MB 3.8MB +911.0B
total +1.2KB
Unknown metric groups

API count

id before after diff
@kbn/monaco 38 52 +14

History

  • 💔 Build #162227 failed 8ba1ffd21cc93dc7ee06c4711b89b7873b07bf27
  • 💔 Build #161499 failed 8e1444770ba0524a0b29bbfae11ebed9b2d050f6
  • 💔 Build #159529 failed d7f8cbd377c32b147e6fa633e2af4485eaf2cc01
  • 💔 Build #159461 failed fbe527e613a2795533ea3f49c736c0e9058fca49

To update your PR or re-run it, just comment with:
@elasticmachine merge upstream

@sebelga
Copy link
Contributor Author

sebelga commented Oct 20, 2021

@elasticmachine merge upstream

1 similar comment
@sebelga
Copy link
Contributor Author

sebelga commented Oct 20, 2021

@elasticmachine merge upstream

I've updated the kbn-monaco package to expose a `validation$` Observable for the consumer. This allows the consumer to get notified when the editor is validating and if it is valid. Previously we [relied on a `setTimeout`](https://github.com/elastic/kibana/blob/master/src/plugins/index_pattern_field_editor/public/components/field_editor/form_fields/script_field.tsx#L90) to wait for the Painless validation to finish and I found it was not predictable and could easily break if for some reason the timeout changed.
In elastic#109238 I've added the possibility to provide dynamic data to field validators.  When working on this current PR I realised that I didn't take into account the fact that we need to be able to validate the field without first triggering a change on the field. My initial proposal to expose an Observable (https://github.com/elastic/kibana/pull/109238/files#diff-ef2d4424a31a8d8def4c1c2d9d756cfef9cc58b30837c1b6639e3419e572cdd9R35) did not take that into account. I reverted that change and decided to allow a Promise to be provided and let the consumer in control of resolving the promise for the validation to resolve.
A nice feature of the form lib is that it lets you provide interchangeably synchronous or asynchronous validations, and it "just work". This simplicity comes at a cost though. In order to achieve that the lib first tries to execute all the validations synchronously and if it finds an asynchronous validation it re-run all the validations asynchronously. This has an undesired effect: async HTTP requests are called twice. :/ With the new `isAsync` option (which should _always_ set to `true` for async validations for the problem stated) we can explicitly tell the form lib that there are some asynchronous validations and that will prevent running them twice.
In some rare cases (and this PR required it) we need to be immediately aware of a field value change _before_ the validations are run. For that purpose I've added an optional `onChange` option that can be passed to the `useFormData()` hook.
While doing loads of QA testing with error messages I realised that the `form.getErrors()` handler was returning stale error messages and was not in sync with the fields errors.
I've updated the Painless syntax validation to use the `validations()` Observable. I've added a new validator to validate the script calling the server endpoint. I could then remove the script validation that we had in place _after_ the form was submitted.
@sebelga
Copy link
Contributor Author

sebelga commented Nov 8, 2021

Thanks for the review @yuliacech and @dborodyansky !

Pinning functionality in preview has regressed. Pinned items are not persisting position.

I haven't been able to reproduce it locally. Are you referring to keep the pin position after closing the editor and reopening?

When cursor is over script editor, trackpad (mac os) scrolling does not function.

Indeed I can reproduce it. It is strange as I would expect the same issue in other places where the Monaco editor is being used (like in Discover) but I can't reproduce it there. I opened #117873 to see if we can improve this.

@sebelga
Copy link
Contributor Author

sebelga commented Nov 8, 2021

@debadair could you do a quick copy review of the error states on this PR?

Here are the screenshots

Screenshot 2021-09-22 at 12 15 51

Screenshot 2021-11-08 at 15 01 03

Thanks!

@sebelga
Copy link
Contributor Author

sebelga commented Nov 8, 2021

@elasticmachine merge upstream

@dborodyansky
Copy link
Contributor

@sebelga Here is a screencast of pinning bug I am encountering. Pinned items are expected to stick to the top of the list and not scroll away, or hide when filtering is applied.

pins

@sebelga
Copy link
Contributor Author

sebelga commented Nov 9, 2021

Thanks @dborodyansky. I don't think this PR brought that issue and the behaviour is already in master. I would prefer to address it in a separate PR if you think this should be improved.

I looked at Discover and the list of pinned fields is scrolled out of the visible area as we do here

Screenshot 2021-11-09 at 09 35 15

Screenshot 2021-11-09 at 09 35 27

There isn't much space left to scroll if we decided to always keep them visible on top. Specially because there is no limit as to how many fields can be pinned.

Screenshot 2021-11-09 at 09 35 38

@kibanamachine
Copy link
Contributor

💚 Build Succeeded

Metrics [docs]

Module Count

Fewer modules leads to a faster build time

id before after diff
esUiShared 158 159 +1
indexPatternFieldEditor 127 128 +1
total +2

Public APIs missing comments

Total count of every public API that lacks a comment. Target amount is 0. Run node scripts/build_api_docs --plugin [yourplugin] --stats comments for more detailed information.

id before after diff
@kbn/monaco 38 52 +14

Any counts in public APIs

Total count of every any typed public API. Target amount is 0. Run node scripts/build_api_docs --plugin [yourplugin] --stats any for more detailed information.

id before after diff
@kbn/monaco 0 1 +1

Async chunks

Total size of all lazy-loaded chunks that will be downloaded as the user navigates the app

id before after diff
indexPatternFieldEditor 139.4KB 142.3KB +3.0KB
osquery 940.4KB 940.4KB -2.0B
total +3.0KB

Public APIs missing exports

Total count of every type that is part of your API that should be exported but is not. This will cause broken links in the API documentation system. Target amount is 0. Run node scripts/build_api_docs --plugin [yourplugin] --stats exports for more detailed information.

id before after diff
@kbn/monaco 3 2 -1

Page load bundle

Size of the bundles that are downloaded on every page load. Target size is below 100kb

id before after diff
esUiShared 122.2KB 122.5KB +230.0B
indexPatternFieldEditor 18.6KB 18.8KB +160.0B
kbnUiSharedDeps-srcJs 3.8MB 3.8MB +892.0B
total +1.3KB
Unknown metric groups

API count

id before after diff
@kbn/monaco 38 52 +14

History

To update your PR or re-run it, just comment with:
@elasticmachine merge upstream

@sebelga sebelga merged commit 4bedc1c into elastic:main Nov 9, 2021
@sebelga sebelga deleted the runtime-field-editor/error-handling-2 branch November 9, 2021 15:51
@sebelga
Copy link
Contributor Author

sebelga commented Nov 9, 2021

@debadair I merged the PR to unblock others. I'll create a separate PR for any copy feedback you have. Cheers 👍

@kibanamachine kibanamachine added the backport missing Added to PRs automatically when the are determined to be missing a backport. label Nov 11, 2021
@kibanamachine
Copy link
Contributor

Friendly reminder: Looks like this PR hasn’t been backported yet.
To create backports run node scripts/backport --pr 109233 or prevent reminders by adding the backport:skip label.

3 similar comments
@kibanamachine
Copy link
Contributor

Friendly reminder: Looks like this PR hasn’t been backported yet.
To create backports run node scripts/backport --pr 109233 or prevent reminders by adding the backport:skip label.

@kibanamachine
Copy link
Contributor

Friendly reminder: Looks like this PR hasn’t been backported yet.
To create backports run node scripts/backport --pr 109233 or prevent reminders by adding the backport:skip label.

@kibanamachine
Copy link
Contributor

Friendly reminder: Looks like this PR hasn’t been backported yet.
To create backports run node scripts/backport --pr 109233 or prevent reminders by adding the backport:skip label.

@kibanamachine
Copy link
Contributor

Friendly reminder: Looks like this PR hasn’t been backported yet.
To create backports run node scripts/backport --pr 109233 or prevent reminders by adding the backport:skip label.

@sebelga sebelga added backport:skip This commit does not require backporting and removed backport missing Added to PRs automatically when the are determined to be missing a backport. labels Nov 18, 2021
@KOTungseth KOTungseth added the Feature:Data Views Data Views code and UI - index patterns before 8.0 label Mar 2, 2022
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
backport:skip This commit does not require backporting Feature:Data Views Data Views code and UI - index patterns before 8.0 Feature:Runtime Fields release_note:enhancement Team:Kibana Management Dev Tools, Index Management, Upgrade Assistant, ILM, Ingest Node Pipelines, and more v8.1.0
Projects
None yet
Development

Successfully merging this pull request may close these issues.

10 participants